import os
import platform
import sys
import numpy as np


# 16 时频域分析
def change_timeFreq(input_file, transformation_form, sample_rate):
    """
    after中是数组是纵坐标，after_freq中的数组是横坐标
    transformationForm=0时，after_freq(横坐标)单位是Hz(赫兹),
    transformationForm=1时，after_freq(横坐标)单位是S(秒)
    不论transformationForm=0 or 1,after(纵坐标)都是(振幅)
    :param input_file: 输入文件地址
    :param transformation_form: 转化方式，0表示时域转化为频域，1表示频域转化为时域
    :param sample_rate: float,r采样时间间隔
    :return: json格式数据{'after':[], 'after_freq':[]}
    """

    transformation_form = int(transformation_form)
    # 获取数据
    with open(input_file) as file_obj:
        array = eval(file_obj.read())
        # 处理数据
        after = []
        after_freq = []
        # 采样时间间隔
        Ts = 1 / float(sample_rate)
        if transformation_form == 0:
            # 将时域转化为频域,输出振幅谱
            frequencyDomain = np.fft.fft(np.array(array))
            after = list(np.abs(frequencyDomain))
            # freq是横坐标（单位是HZ）
            freq = np.fft.fftfreq(len(array), d=Ts)
            after_freq = list(freq)
        if transformation_form == 1:
            # 将频域转化为时域
            after = list(np.real(np.fft.ifft(np.array(array))))
            after_freq = list(np.arange(Ts, Ts * (len(after) + 1), Ts))

        return {'after': after, 'after_freq': after_freq}


if __name__ == '__main__':
    print(change_timeFreq(sys.argv[1], sys.argv[2], sys.argv[3]))
